package org.bookie.framework.components;

import org.bookie.model.Outcome;

/**
 * BetSlip interface that is shared between components 
 * 
 * @author zubairov
 *
 */
public interface IBetSlipComponent {

	/**
	 * Adds an {@link Outcome} to the betslip component
	 * 
	 * @returns true if betsip was added, false otherwise
	 * @param outcome outcome to add
	 */
	public abstract void addOutcome(Outcome outcome);

	/**
	 * Returns <code>true</code> when user have already selected
	 * a given {@link Outcome} for the betslip
	 * @param outcome outcome to check
	 */
	public abstract boolean isSelected(Outcome outcome);
	
	/**
	 * Returns <code>true</code> if the {@link Outcome} may be selected. Otherwise returns <code>false</code>.
	 * @param outcome outcome to check
	 */
	public abstract boolean isSelectable(Outcome outcome);

}